[Imprint][Data Privacy Statement][E-Mail]
Back to main index.
View the specification.
View theorem base summary,
View theorem base listing,
the used properties by spec,
the dependency list,
the symbol table,
enrich
array
with
functions fill : array × elem → array;
comment: fill complete array;
rev : array → array;
predicates . ∈ . : elem × array;
id○ : array × array × nat;
comment: id○(ar0, ar1, n) is true if all elements except those at offset n are equal;
variables m0 : nat;
partial functions fill : array × elem × nat × nat → array with λ ar, a, n, m. n + m ≤ # ar;
comment: fill(ar, a, offset, len) sets len indices from offset (inclusive) to a;
copy : array × nat × array × nat × nat → array with λ ar, m, ar0, m0, n. m + n ≤ # ar ∧ m0 + n ≤ # ar0;
comment: copy(ar, m, ar0, m0, n) copy from ar at offset m into ar0 at offset m0
n elements and return new ar0;
subarray : array × nat × nat → array with λ ar, m, n. m + n ≤ # ar;
comment: subarray(ar, m, n) returns subarray of ar from offset m with length n;
rev : array × nat → array with λ ar, n. n ≤ # ar;
partial predicates cmp : array × nat × array × nat × nat with λ ar, m, ar0, m0, n. m + n ≤ # ar ∧ m0 + n ≤ # ar0;
comment: cmp(ar, m, ar0, m0, n) compares n elements of ar from offset m with ar0
from offset m0;
cmp : array × elem × nat × nat with λ ar, a, m, n. m + n ≤ # ar;
comment: cmp(ar, a, m, n) is true if all elements in the range at offset m
with length n are equal to a;
idrange : array × nat × nat with λ ar, m, n. m + n ≤ # ar;
comment: idrange(ar, m, n) is true if all elements
in the range at offset m with length n are equal;
axioms in : ⊦ a ∈ ar ↔ (∃ n. n < # ar ∧ ar[n] = a);
used for: ls;
Fill-zero : ⊦ fill(ar, a, m, 0) = ar;
used for: s, ls;
Fill-succ : ⊦ fill(ar, a, m, n + 1) = fill(ar, a, m, n)[m + n, a];
used for: s, ls;
Fill-all : ⊦ fill(ar, a) = fill(ar, a, 0, # ar);
used for: ls;
Copy-zero : ⊦ copy(ar, m, ar0, m0, 0) = ar0;
used for: s, ls;
Copy-succ : ⊦ copy(ar, m, ar0, m0, n + 1) = copy(ar, m, ar0, m0, n)[m0 + n, ar[m + n]];
used for: ls;
Subarray : ⊦ subarray(ar, m, n) = copy(ar, m, mkarray(n), 0, n);
used for: ls;
Compare : ⊦ cmp(ar, m, ar0, m0, n) ↔ (∀ n0. n0 < n → ar[m + n0] = ar0[m0 + n0]);
Cmp-elem : ⊦ cmp(ar, a, m, n) ↔ (∀ n0. n0 < n → ar[m + n0] = a);
Idrange : ⊦ idrange(ar, m, n) ↔ (∀ n0. n0 < n → ar[m + n0] = ar[m]);
Idexcept : ⊦ id○(ar0, ar1, n) ↔ # ar0 = # ar1 ∧ (∀ m. m < # ar0 ∧ m ≠ n → ar0[m] = ar1[m]);
used for: ls;
rev-base : ⊦ rev(ar, 0) = mkarray(# ar);
used for: s, ls;
rev-rec : ⊦ n < # ar → rev(ar, n + 1) = rev(ar, n)[n, ar[# ar - n + 1]];
used for: s, ls;
rev : ⊦ rev(ar) = rev(ar, # ar);
end enrich